<?php
/**
* Класс-помошник для работы со строками
*
* @author Larein
* @version 1.0.0 / 21.07.2011
*/
class HString
{
    /**
    * Возвращает склоненное слово в зависимости от числа
    * 
    * @param mixed $number число
    * @param mixed $words слова для склонения ('[1]слово', '[2]слова', '[5]слов')
    * @return string
    */
    public static function declination($number, $words=array())
    {
        $number = abs($number);
        if ($number > 20) 
            $number %= 10;    
        if ($number == 1) 
            return $words[0];
        if ($number >= 2 && $number <= 4) 
            return $words[1];
        return $words[2];
    }
    
    /**
    * Возвращает случайно сгенерированную строку
    * 
    * @param mixed $len             количество символов
    * @param mixed $characterSet    символы для генерации, если значение не передано, то использутся все символы
    * @param mixed $useNum          использовать числа
    * @param mixed $useSLetters     использовать символы в нижнем регистре
    * @param mixed $useBLetters     использовать символы в верхнем регистре
    * 
    * @return string
    */
    public static function randomString($lenght=7, $characterSet=null, $useNum=true, $useSLetters=true, $useBLetters=true) 
    {   
        $num            = '1234567890';
        $smallLetters   = 'abcdefghijklmnopqrstuvwxyz';
        $bigLetters     = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
                                
        $pool ='';
        
        if(empty($characterSet))
        {
            if($useNum)
                $pool .= $num;
            if($useSLetters)
                $pool .= $smallLetters;
            if($useBLetters)
                $pool .= $bigLetters;            
        } 
        else
            $pool .= $characterSet;    
            
        $string = '';
        
        for ($i=0; $i < $lenght; $i++)
        {
            $string .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
        }
        return $string;
    }      
  
}